SendEmail.php
<?php
namespace Tlf\User\Validation;
/**
* Methods for sending emails
*/
trait SendEmail {
public function show_mail_failed_send($form=null){
echo "<p class=\"error\">There was an internal error sending the email for password reset. Please try again.</p>";
if ($form!=null)$this->show_form($form);
return new \Tlf\User\BlackHole($this);
}
public function send_security_email(){
$lib = $this->lib;
$website = $lib->config['web_address'];
$msg = "Your password for <a href=\"$website\">$website</a> was changed.";
$mail_sent = mail($_POST['email'], 'Password Updated', $msg,
[
"From"=>$lib->config['email_from'],
"Reply-To"=>$lib->config['email_from']
],
);
if ($mail_sent)return $this;
else {
echo '<p class="error">Internal Error: Failed to send security email, so password cannot be updated. Please try again.</p>';
echo $this->show_form('complete.password_reset');
return new \Tlf\User\BlackHole($this);
}
}
public function send_email_request_reset_account_notexists(){
$lib = $this->lib;
$package = $this->args['package'];
$website = $lib->config['web_address'];
$register_url = $website.$package->url('/register/');
$msg = 'Someone tried to reset your password on <a href="'.$website.'">'.$website.'</a>, but you do not have an account with us. If this was you, please register with us at <a href="'.$register_url.'">'.$register_url.'</a>';
$mail_sent = mail($this->data['email'], 'Password Reset', $msg,
[
"From"=>$lib->config['email_from'],
"Reply-To"=>$lib->config['email_from']
],
);
if (!$mail_sent)return $this->show_mail_failed_send('complete.password_reset');
return $this;
}
public function send_email_request_reset_account_inactive(){
$lib = $this->lib;
$package = $this->args['package'];
$email = $this->data['email'];
$user = $lib->user_from_email($email);
$register_code = $user->new_code('registration');
$website = $lib->config['web_address'];
$reset_code = $user->new_code('password_reset');
$register_url = $website.$package->url('/complete.registration.'.$register_code.'/');
$reset_url = $website.$package->url("/complete.password_reset.$reset_code/");
$mail_msg = "You tried to reset your password, but you have not completed registration."
."<br>\n".'1. Complete registration by visiting <a href="'.$register_url.'">'.$register_url.'</a>'
."<br>\n".'2. Then you can reset your password by visiting <a href="'.$reset_url.'">'.$reset_url.'</a>';
$mail_sent = mail($email, 'Password Reset', $mail_msg,
[
"From"=>$lib->config['email_from'],
"Reply-To"=>$lib->config['email_from']
],
);
if (!$mail_sent)return $this->show_mail_failed_send('complete.password_reset');
return $this;
}
public function send_email_register_account_exists(){
$lib = $this->lib;
$package = $this->args['package'];
$url = $lib->config['web_address'].$package->url('/login/');
$mail_sent = mail($_POST['email'], 'Account Registration',
"Somebody tried to register an account with your email address, but you already have an account with us. Log in at "
."<a href=\"$url\">$url</a>",
[
"From"=>$lib->config['email_from'],
"Reply-To"=>$lib->config['email_from']
],
);
if (!$mail_sent)return $this->show_mail_failed_send('register');
return $this;
}
public function send_email_request_reset_password(){
$lib = $this->lib;
$package = $this->args['package'];
$email = $this->data['email'];
$website = $lib->config['web_address'];
$user = $lib->user_from_email($email);
$reset_code = $user->new_code('password_reset');
$reset_url = $website.$package->url('/complete.password_reset.'.$reset_code.'/');
$mail_msg = "To setup a new password, visit <a href=\"$reset_url\">$reset_url</a>.";
// var_dump($lib->config['email_from']);
// var_dump($email);
// exit;
$mail_sent = mail($email, 'Password Reset', $mail_msg,
[
"From"=>$lib->config['email_from'],
"Reply-To"=>$lib->config['email_from']
],
);
if (!$mail_sent)return $this->show_mail_failed_send('complete.password_reset');
return $this;
}
public function send_email_register(){
$lib = $this->lib;
$package = $this->args['package'];
$email = $this->data['email'];
$user = $lib->user_from_email($email);
$user->register($_POST['password']);
$code = $user->new_code('registration');
$register_url = $lib->config['web_address'].$package->url('/complete.registration.'.$code.'/');
// generate code
// build url
$mail_sent = mail($_POST['email'], 'Account Registration',
"To complete registration, visit <a href=\"$register_url\">$register_url</a>",
['From'=>$lib->config['email_from'],
'Reply-To'=>$lib->config['email_from']
],
);
if (!$mail_sent)return $this->show_mail_failed_send('register');
return $this;
}
}